package issr.market.controller;

import issr.market.db.impl.DBControllerImpl;
import issr.market.model.Utente;
import issr.market.services.GestioneUtenteService;
import issr.market.utils.Constants;

import java.util.List;

import org.apache.log4j.Logger;

public class GestoreCredenzialiController extends AbstractController {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1433332621007879938L;
	
	
	private static final String CREA_UTENTE = "crea";
	private static final String MODIFICA_UTENTE = "modifica";
	private static final String CANCELLA_UTENTE = "cancella";
	
	private String idModifica;
	private String nomeUtente;
	private String loginUtente;
	private String password;
	private String mailUtente;
	private String telUtente;
	private String ruoloUtente;
	private String scadenzaPwd;
	private String scadenzaReg;
	
	private String[] idUtente;
	
	private List<Utente> utenti;
	
	private String ordinamento;
	
	private Logger logger = Logger.getLogger(GestoreCredenzialiController.class);
	
	@Override
	public String execute() {
		
		if(accessForbidden())
			return "login";
		
		
		
		if(getActionToDo()!=null && getActionToDo().equals(CREA_UTENTE)){
			
			logger.info("Creazione utente");
			GestioneUtenteService.creaUtente(nomeUtente, loginUtente, password, mailUtente, telUtente, scadenzaReg, scadenzaPwd, ruoloUtente);
			
			if(Integer.valueOf(ruoloUtente)==Constants.NUM_RUOLO_ADMIN_GENERALE)
				return "accesso";	
			return null;
			
		}
		else if(getActionToDo()!=null && getActionToDo().equals(MODIFICA_UTENTE))
			GestioneUtenteService.modificaUtente(nomeUtente, loginUtente, password, mailUtente, telUtente, scadenzaReg, scadenzaPwd, ruoloUtente, idModifica);
		
		else if(getActionToDo()!=null && getActionToDo().equals(CANCELLA_UTENTE))
			GestioneUtenteService.cancellaUtente(idUtente);
		
		utenti = initializeGestoreCredenzialiView(ordinamento);
		
		
		return "success";
	}
	
	public List<Utente> getUtenti(){
		return utenti;
	}

	public String getOrdinamento() {
		return ordinamento;
	}

	public void setOrdinamento(String ordinamento) {
		this.ordinamento = ordinamento;
	}
	
	public static List<Utente> initializeGestoreCredenzialiView(String ordinamento){
		
		List<Utente> utenti = new DBControllerImpl().getUtenti(ordinamento);
		if(ordinamento == null)
			ordinamento = "default";
		
		return utenti;
	}
	
	public String getNomeUtente() {
		return nomeUtente;
	}

	public void setNomeUtente(String nomeUtente) {
		this.nomeUtente = nomeUtente;
	}

	public String getLoginUtente() {
		return loginUtente;
	}

	public void setLoginUtente(String loginUtente) {
		this.loginUtente = loginUtente;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getMailUtente() {
		return mailUtente;
	}

	public void setMailUtente(String mailUtente) {
		this.mailUtente = mailUtente;
	}

	public String getTelUtente() {
		return telUtente;
	}

	public void setTelUtente(String telUtente) {
		this.telUtente = telUtente;
	}

	public String getRuoloUtente() {
		return ruoloUtente;
	}

	public void setRuoloUtente(String ruoloUtente) {
		this.ruoloUtente = ruoloUtente;
	}

	public String getScadenzaPwd() {
		return scadenzaPwd;
	}

	public void setScadenzaPwd(String scadenzaPwd) {
		this.scadenzaPwd = scadenzaPwd;
	}

	public String getScadenzaReg() {
		return scadenzaReg;
	}

	public void setScadenzaReg(String scadenzaReg) {
		this.scadenzaReg = scadenzaReg;
	}

	public void setIdUtente(String[] idUtente) {
		this.idUtente = idUtente;
	}

	public String getIdModifica() {
		return idModifica;
	}

	public void setIdModifica(String idModifica) {
		this.idModifica = idModifica;
	}


	
}
